home *** CD-ROM | disk | FTP | other *** search
Wrap
/* File: Movies.h Contains: QuickTime Interfaces. Version: Technology: QuickTime 2.0 Package: Universal Interfaces 2.0 in “MPW Latest” on ETO #17 Copyright: © 1984-1995 by Apple Computer, Inc. All rights reserved. Bugs?: If you find a problem with this file, use the Apple Bug Reporter stack. Include the file and version information (from above) in the problem description and send to: Internet: apple.bugs@applelink.apple.com AppleLink: APPLE.BUGS */ #ifndef __MOVIES__ #define __MOVIES__ #ifndef __QUICKDRAW__ #include <Quickdraw.h> #endif /* #include <Types.h> */ /* #include <ConditionalMacros.h> */ /* #include <MixedMode.h> */ /* #include <QuickdrawText.h> */ #ifndef __ALIASES__ #include <Aliases.h> #endif /* #include <AppleTalk.h> */ /* #include <OSUtils.h> */ /* #include <Memory.h> */ /* #include <Files.h> */ #ifndef __EVENTS__ #include <Events.h> #endif #ifndef __MENUS__ #include <Menus.h> #endif #ifndef __COMPONENTS__ #include <Components.h> #endif #ifndef __IMAGECOMPRESSION__ #include <ImageCompression.h> #endif /* #include <QDOffscreen.h> */ /* #include <Errors.h> */ /* #include <Windows.h> */ /* #include <Controls.h> */ /* #include <StandardFile.h> */ /* #include <Dialogs.h> */ /* #include <TextEdit.h> */ #ifdef __cplusplus extern "C" { #endif #if PRAGMA_ALIGN_SUPPORTED #pragma options align=mac68k #endif #if PRAGMA_IMPORT_SUPPORTED #pragma import on #endif enum { MovieFileType = 'MooV' }; enum { MediaHandlerType = 'mhlr', DataHandlerType = 'dhlr' }; enum { VideoMediaType = 'vide', SoundMediaType = 'soun', TextMediaType = 'text', BaseMediaType = 'gnrc', MPEGMediaType = 'MPEG', MusicMediaType = 'musi', TimeCodeMediaType = 'tmcd', HandleDataHandlerSubType = 'hndl' }; enum { VisualMediaCharacteristic = 'eyes', AudioMediaCharacteristic = 'ears' }; enum { DoTheRightThing = 0 }; struct MovieRecord { long data[1]; }; typedef struct MovieRecord MovieRecord, *Movie; struct TrackRecord { long data[1]; }; typedef struct TrackRecord TrackRecord, *Track; struct MediaRecord { long data[1]; }; typedef struct MediaRecord MediaRecord, *Media; struct UserDataRecord { long data[1]; }; typedef struct UserDataRecord UserDataRecord, *UserData; struct TrackEditStateRecord { long data[1]; }; typedef struct TrackEditStateRecord TrackEditStateRecord, *TrackEditState; struct MovieEditStateRecord { long data[1]; }; typedef struct MovieEditStateRecord MovieEditStateRecord, *MovieEditState; struct SampleDescription { long descSize; long dataFormat; long resvd1; short resvd2; short dataRefIndex; }; typedef struct SampleDescription SampleDescription, *SampleDescriptionPtr, **SampleDescriptionHandle; struct SoundDescription { long descSize; /* total size of SoundDescription including extra data */ long dataFormat; /* */ long resvd1; /* reserved for apple use */ short resvd2; short dataRefIndex; short version; /* which version is this data */ short revlevel; /* what version of that codec did this */ long vendor; /* whose codec compressed this data */ short numChannels; /* number of channels of sound */ short sampleSize; /* number of bits per sample */ short compressionID; /* sound compression used, 0 if none */ short packetSize; /* packet size for compression, 0 if no compression */ Fixed sampleRate; /* sample rate sound is captured at */ }; typedef struct SoundDescription SoundDescription, *SoundDescriptionPtr, **SoundDescriptionHandle; struct TextDescription { long descSize; /* Total size of TextDescription*/ long dataFormat; /* 'text'*/ long resvd1; short resvd2; short dataRefIndex; long displayFlags; /* see enum below for flag values*/ long textJustification; /* Can be: teCenter,teFlush -Default,-Right,-Left*/ RGBColor bgColor; /* Background color*/ Rect defaultTextBox; /* Location to place the text within the track bounds*/ ScrpSTElement defaultStyle; /* Default style (struct defined in TextEdit.h)*/ char defaultFontName[1]; /* Font Name (pascal string - struct extended to fit) */ }; typedef struct TextDescription TextDescription, *TextDescriptionPtr, **TextDescriptionHandle; /*-------------------------- Music Sample Description --------------------------*/ struct MusicDescription { long descSize; long dataFormat; /* 'musi' */ long resvd1; short resvd2; short dataRefIndex; long musicFlags; unsigned long headerData[1]; /* variable size! */ }; typedef struct MusicDescription MusicDescription; typedef MusicDescription *MusicDescriptionPtr; typedef MusicDescriptionPtr *MusicDescriptionHandle; enum { dfDontDisplay = 1 << 0, /* Don't display the text*/ dfDontAutoScale = 1 << 1, /* Don't scale text as track bounds grows or shrinks*/ dfClipToTextBox = 1 << 2, /* Clip update to the textbox*/ dfUseMovieBGColor = 1 << 3, /* Set text background to movie's background color*/ dfShrinkTextBoxToFit = 1 << 4, /* Compute minimum box to fit the sample*/ dfScrollIn = 1 << 5, /* Scroll text in until last of text is in view */ dfScrollOut = 1 << 6, /* Scroll text out until last of text is gone (if both set, scroll in then out)*/ dfHorizScroll = 1 << 7, /* Scroll text horizontally (otherwise it's vertical)*/ dfReverseScroll = 1 << 8, /* vert: scroll down rather than up; horiz: scroll backwards (justfication dependent)*/ dfContinuousScroll = 1 << 9, /* new samples cause previous samples to scroll out */ dfFlowHoriz = 1 << 10, /* horiz scroll text flows in textbox rather than extend to right */ dfDropShadow = 1 << 12, /* display text with a drop shadow */ dfAntiAlias = 1 << 13, /* attempt to display text anti aliased*/ dfKeyedText = 1 << 14, /* key the text over background*/ dfInverseHilite = 1 << 15 /* Use inverse hiliting rather than using hilite color*/ }; enum { searchTextDontGoToFoundTime = 1L << 16, searchTextDontHiliteFoundText = 1L << 17, searchTextOneTrackOnly = 1L << 18, searchTextEnabledTracksOnly = 1L << 19 }; /* progress messages */ enum { movieProgressOpen = 0, movieProgressUpdatePercent = 1, movieProgressClose = 2 }; /* progress operations */ enum { progressOpFlatten = 1, progressOpInsertTrackSegment, progressOpInsertMovieSegment, progressOpPaste, progressOpAddMovieSelection, progressOpCopy, progressOpCut, progressOpLoadMovieIntoRam, progressOpLoadTrackIntoRam, progressOpLoadMediaIntoRam, progressOpImportMovie, progressOpExportMovie }; enum { mediaQualityDraft = 0x0000, mediaQualityNormal = 0x0040, mediaQualityBetter = 0x0080, mediaQualityBest = 0x00C0 }; typedef pascal OSErr (*MovieRgnCoverProcPtr)(Movie theMovie, RgnHandle changedRgn, long refcon); typedef pascal OSErr (*MovieProgressProcPtr)(Movie theMovie, short message, short whatOperation, Fixed percentDone, long refcon); typedef pascal OSErr (*MovieDrawingCompleteProcPtr)(Movie theMovie, long refCon); typedef pascal OSErr (*TrackTransferProcPtr)(Track t, long refCon); typedef pascal OSErr (*GetMovieProcPtr)(long offset, long size, void *dataPtr, void *refCon); typedef pascal Boolean (*MoviePreviewCallOutProcPtr)(long refcon); typedef pascal void (*MoviesErrorProcPtr)(OSErr theErr, long refcon); typedef pascal OSErr (*TextMediaProcPtr)(Handle theText, Movie theMovie, short *displayFlag, long refcon); #if GENERATINGCFM typedef UniversalProcPtr MovieRgnCoverUPP; typedef UniversalProcPtr MovieProgressUPP; typedef UniversalProcPtr MovieDrawingCompleteUPP; typedef UniversalProcPtr TrackTransferUPP; typedef UniversalProcPtr GetMovieUPP; typedef UniversalProcPtr MoviePreviewCallOutUPP; typedef UniversalProcPtr MoviesErrorUPP; typedef UniversalProcPtr TextMediaUPP; #else typedef MovieRgnCoverProcPtr MovieRgnCoverUPP; typedef MovieProgressProcPtr MovieProgressUPP; typedef MovieDrawingCompleteProcPtr MovieDrawingCompleteUPP; typedef TrackTransferProcPtr TrackTransferUPP; typedef GetMovieProcPtr GetMovieUPP; typedef MoviePreviewCallOutProcPtr MoviePreviewCallOutUPP; typedef MoviesErrorProcPtr MoviesErrorUPP; typedef TextMediaProcPtr TextMediaUPP; #endif typedef ComponentInstance MediaHandler, DataHandler; typedef Component MediaHandlerComponent, DataHandlerComponent; typedef ComponentResult HandlerError; typedef long TimeValue; typedef long TimeScale; typedef wide CompTimeValue; enum { loopTimeBase = 1, palindromeLoopTimeBase = 2, maintainTimeBaseZero = 4 }; typedef unsigned long TimeBaseFlags; struct TimeBaseRecord { long data[1]; }; typedef struct TimeBaseRecord TimeBaseRecord, *TimeBase; struct CallBackRecord { long data[1]; }; typedef struct CallBackRecord CallBackRecord, *QTCallBack; struct TimeRecord { CompTimeValue value; /* units */ TimeScale scale; /* units per second */ TimeBase base; }; typedef struct TimeRecord TimeRecord; /* CallBack equates */ enum { triggerTimeFwd = 0x0001, /* when curTime exceeds triggerTime going forward */ triggerTimeBwd = 0x0002, /* when curTime exceeds triggerTime going backwards */ triggerTimeEither = 0x0003, /* when curTime exceeds triggerTime going either direction */ triggerRateLT = 0x0004, /* when rate changes to less than trigger value */ triggerRateGT = 0x0008, /* when rate changes to greater than trigger value */ triggerRateEqual = 0x0010, /* when rate changes to equal trigger value */ triggerRateLTE = triggerRateLT | triggerRateEqual, triggerRateGTE = triggerRateGT | triggerRateEqual, triggerRateNotEqual = triggerRateGT | triggerRateEqual | triggerRateLT, triggerRateChange = 0, triggerAtStart = 0x0001, triggerAtStop = 0x0002 }; typedef unsigned short QTCallBackFlags; enum { timeBaseBeforeStartTime = 1, timeBaseAfterStopTime = 2 }; typedef unsigned long TimeBaseStatus; enum { callBackAtTime = 1, callBackAtRate = 2, callBackAtTimeJump = 3, callBackAtExtremes = 4, callBackAtInterrupt = 0x8000, callBackAtDeferredTask = 0x4000 }; typedef unsigned short QTCallBackType; typedef pascal void (*QTCallBackProcPtr)(QTCallBack cb, long refCon); #if GENERATINGCFM typedef UniversalProcPtr QTCallBackUPP; #else typedef QTCallBackProcPtr QTCallBackUPP; #endif enum { qtcbNeedsRateChanges = 1, /* wants to know about rate changes */ qtcbNeedsTimeChanges = 2, /* wants to know about time changes */ qtcbNeedsStartStopChanges = 4 /* wants to know when TimeBase start/stop is changed*/ }; struct QTCallBackHeader { long callBackFlags; long reserved1; SInt8 qtPrivate[40]; }; typedef struct QTCallBackHeader QTCallBackHeader; typedef pascal void (*QTSyncTaskProcPtr)(void *task); #if GENERATINGCFM typedef UniversalProcPtr QTSyncTaskUPP; #else typedef QTSyncTaskProcPtr QTSyncTaskUPP; #endif struct QTSyncTaskRecord { void *qLink; QTSyncTaskUPP proc; }; typedef struct QTSyncTaskRecord QTSyncTaskRecord, *QTSyncTaskPtr; enum { keepInRam = 1 << 0, /* load and make non-purgable*/ unkeepInRam = 1 << 1, /* mark as purgable*/ flushFromRam = 1 << 2, /* empty those handles*/ loadForwardTrackEdits = 1 << 3, /* load track edits into ram for playing forward*/ loadBackwardTrackEdits = 1 << 4 /* load track edits into ram for playing in reverse*/ }; enum { newMovieActive = 1 << 0, newMovieDontResolveDataRefs = 1 << 1, newMovieDontAskUnresolvedDataRefs = 1 << 2, newMovieDontAutoAlternates = 1 << 3 }; /* track usage bits */ enum { trackUsageInMovie = 1 << 1, trackUsageInPreview = 1 << 2, trackUsageInPoster = 1 << 3 }; /* Add/GetMediaSample flags */ enum { mediaSampleNotSync = 1 << 0, /* sample is not a sync sample (eg. is frame differenced */ mediaSampleShadowSync = 1 << 1 /* sample is a shadow sync */ }; enum { pasteInParallel = 1, showUserSettingsDialog = 2, movieToFileOnlyExport = 4 }; enum { nextTimeMediaSample = 1 << 0, nextTimeMediaEdit = 1 << 1, nextTimeTrackEdit = 1 << 2, nextTimeSyncSample = 1 << 3, nextTimeEdgeOK = 1 << 14, nextTimeIgnoreActiveSegment = 1 << 15 }; typedef unsigned short nextTimeFlagsEnum; enum { createMovieFileDeleteCurFile = 1L << 31, createMovieFileDontCreateMovie = 1L << 30, createMovieFileDontOpenFile = 1L << 29 }; typedef unsigned long createMovieFileFlagsEnum; enum { flattenAddMovieToDataFork = 1L << 0, flattenActiveTracksOnly = 1L << 2, flattenDontInterleaveFlatten = 1L << 3 }; typedef unsigned long movieFlattenFlagsEnum; enum { movieInDataForkResID = -1 /* magic res ID */ }; enum { mcTopLeftMovie = 1 << 0, /* usually centered */ mcScaleMovieToFit = 1 << 1, /* usually only scales down */ mcWithBadge = 1 << 2, /* give me a badge */ mcNotVisible = 1 << 3, /* don't show controller */ mcWithFrame = 1 << 4 /* gimme a frame */ }; enum { movieScrapDontZeroScrap = 1 << 0, movieScrapOnlyPutMovie = 1 << 1 }; enum { dataRefSelfReference = 1 << 0, dataRefWasNotResolved = 1 << 1 }; typedef unsigned long dataRefAttributesFlags; enum { hintsScrubMode = 1 << 0, /* mask == && (if flags == scrub on, flags != scrub off) */ hintsLoop = 1 << 1, hintsDontPurge = 1 << 2, hintsUseScreenBuffer = 1 << 5, hintsAllowInterlace = 1 << 6, hintsUseSoundInterp = 1 << 7, hintsHighQuality = 1 << 8, /* slooooow */ hintsPalindrome = 1 << 9, hintsInactive = 1 << 11 }; typedef unsigned long playHintsEnum; enum { mediaHandlerFlagBaseClient = 1 }; typedef unsigned long mediaHandlerFlagsEnum; enum { movieTrackMediaType = 1 << 0, movieTrackCharacteristic = 1 << 1, movieTrackEnabledOnly = 1 << 2 }; struct SampleReferenceRecord { long dataOffset; long dataSize; TimeValue durationPerSample; long numberOfSamples; short sampleFlags; }; typedef struct SampleReferenceRecord SampleReferenceRecord, *SampleReferencePtr; /************************* * Initialization Routines **************************/ extern pascal OSErr EnterMovies(void) TWOWORDINLINE(0x7001, 0xAAAA); extern pascal void ExitMovies(void) TWOWORDINLINE(0x7002, 0xAAAA); /************************* * Error Routines **************************/ extern pascal OSErr GetMoviesError(void) TWOWORDINLINE(0x7003, 0xAAAA); extern pascal void ClearMoviesStickyError(void) THREEWORDINLINE(0x303C, 0xDE, 0xAAAA); extern pascal OSErr GetMoviesStickyError(void) TWOWORDINLINE(0x7004, 0xAAAA); extern pascal void SetMoviesErrorProc(MoviesErrorUPP errProc, long refcon) THREEWORDINLINE(0x303C, 0xEF, 0xAAAA); /************************* * Idle Routines **************************/ extern pascal void MoviesTask(Movie theMovie, long maxMilliSecToUse) TWOWORDINLINE(0x7005, 0xAAAA); extern pascal OSErr PrerollMovie(Movie theMovie, TimeValue time, Fixed Rate) TWOWORDINLINE(0x7006, 0xAAAA); extern pascal OSErr LoadMovieIntoRam(Movie theMovie, TimeValue time, TimeValue duration, long flags) TWOWORDINLINE(0x7007, 0xAAAA); extern pascal OSErr LoadTrackIntoRam(Track theTrack, TimeValue time, TimeValue duration, long flags) THREEWORDINLINE(0x303C, 0x16E, 0xAAAA); extern pascal OSErr LoadMediaIntoRam(Media theMedia, TimeValue time, TimeValue duration, long flags) TWOWORDINLINE(0x7008, 0xAAAA); extern pascal void SetMovieActive(Movie theMovie, Boolean active) TWOWORDINLINE(0x7009, 0xAAAA); extern pascal Boolean GetMovieActive(Movie theMovie) TWOWORDINLINE(0x700A, 0xAAAA); /************************* * calls for playing movies, previews, posters **************************/ extern pascal void StartMovie(Movie theMovie) TWOWORDINLINE(0x700B, 0xAAAA); extern pascal void StopMovie(Movie theMovie) TWOWORDINLINE(0x700C, 0xAAAA); extern pascal void GoToBeginningOfMovie(Movie theMovie) TWOWORDINLINE(0x700D, 0xAAAA); extern pascal void GoToEndOfMovie(Movie theMovie) TWOWORDINLINE(0x700E, 0xAAAA); extern pascal Boolean IsMovieDone(Movie theMovie) THREEWORDINLINE(0x303C, 0xDD, 0xAAAA); extern pascal Boolean GetMoviePreviewMode(Movie theMovie) TWOWORDINLINE(0x700F, 0xAAAA); extern pascal void SetMoviePreviewMode(Movie theMovie, Boolean usePreview) TWOWORDINLINE(0x7010, 0xAAAA); extern pascal void ShowMoviePoster(Movie theMovie) TWOWORDINLINE(0x7011, 0xAAAA); extern pascal void PlayMoviePreview(Movie theMovie, MoviePreviewCallOutUPP callOutProc, long refcon) THREEWORDINLINE(0x303C, 0xF2, 0xAAAA); /************************* * calls for controlling movies & tracks which are playing **************************/ extern pascal TimeBase GetMovieTimeBase(Movie theMovie) TWOWORDINLINE(0x7012, 0xAAAA); extern pascal void SetMovieMasterTimeBase(Movie theMovie, TimeBase tb, const TimeRecord *slaveZero) THREEWORDINLINE(0x303C, 0x167, 0xAAAA); extern pascal void SetMovieMasterClock(Movie theMovie, Component clockMeister, const TimeRecord *slaveZero) THREEWORDINLINE(0x303C, 0x168, 0xAAAA); extern pascal void GetMovieGWorld(Movie theMovie, CGrafPtr *port, GDHandle *gdh) TWOWORDINLINE(0x7015, 0xAAAA); extern pascal void SetMovieGWorld(Movie theMovie, CGrafPtr port, GDHandle gdh) TWOWORDINLINE(0x7016, 0xAAAA); enum { movieDrawingCallWhenChanged = 0, movieDrawingCallAlways = 1 }; extern pascal void SetMovieDrawingCompleteProc(Movie theMovie, long flags, MovieDrawingCompleteUPP proc, long refCon) THREEWORDINLINE(0x303C, 0x1DE, 0xAAAA); extern pascal Track GetNextTrackForCompositing(Movie theMovie, Track theTrack) THREEWORDINLINE(0x303C, 0x1FA, 0xAAAA); extern pascal Track GetPrevTrackForCompositing(Movie theMovie, Track theTrack) THREEWORDINLINE(0x303C, 0x1FB, 0xAAAA); extern pascal void SetTrackGWorld(Track theTrack, CGrafPtr port, GDHandle gdh, TrackTransferUPP proc, long refCon) THREEWORDINLINE(0x303C, 0x9D, 0xAAAA); extern pascal PicHandle GetMoviePict(Movie theMovie, TimeValue time) TWOWORDINLINE(0x701D, 0xAAAA); extern pascal PicHandle GetTrackPict(Track theTrack, TimeValue time) TWOWORDINLINE(0x701E, 0xAAAA); extern pascal PicHandle GetMoviePosterPict(Movie theMovie) THREEWORDINLINE(0x303C, 0xF7, 0xAAAA); /* called between Begin & EndUpdate */ extern pascal OSErr UpdateMovie(Movie theMovie) TWOWORDINLINE(0x701F, 0xAAAA); /**** spatial movie routines ****/ extern pascal void GetMovieBox(Movie theMovie, Rect *boxRect) THREEWORDINLINE(0x303C, 0xF9, 0xAAAA); extern pascal void SetMovieBox(Movie theMovie, const Rect *boxRect) THREEWORDINLINE(0x303C, 0xFA, 0xAAAA); /** movie display clip */ extern pascal RgnHandle GetMovieDisplayClipRgn(Movie theMovie) THREEWORDINLINE(0x303C, 0xFC, 0xAAAA); extern pascal void SetMovieDisplayClipRgn(Movie theMovie, RgnHandle theClip) THREEWORDINLINE(0x303C, 0xFD, 0xAAAA); /** movie src clip */ extern pascal RgnHandle GetMovieClipRgn(Movie theMovie) THREEWORDINLINE(0x303C, 0x100, 0xAAAA); extern pascal void SetMovieClipRgn(Movie theMovie, RgnHandle theClip) THREEWORDINLINE(0x303C, 0x101, 0xAAAA); /** track src clip */ extern pascal RgnHandle GetTrackClipRgn(Track theTrack) THREEWORDINLINE(0x303C, 0x102, 0xAAAA); extern pascal void SetTrackClipRgn(Track theTrack, RgnHandle theClip) THREEWORDINLINE(0x303C, 0x103, 0xAAAA); /** bounds in display space (not clipped by display clip) */ extern pascal RgnHandle GetMovieDisplayBoundsRgn(Movie theMovie) THREEWORDINLINE(0x303C, 0xFB, 0xAAAA); extern pascal RgnHandle GetTrackDisplayBoundsRgn(Track theTrack) THREEWORDINLINE(0x303C, 0x112, 0xAAAA); /** bounds in movie space */ extern pascal RgnHandle GetMovieBoundsRgn(Movie theMovie) THREEWORDINLINE(0x303C, 0xFE, 0xAAAA); extern pascal RgnHandle GetTrackMovieBoundsRgn(Track theTrack) THREEWORDINLINE(0x303C, 0xFF, 0xAAAA); /** bounds in track space */ extern pascal RgnHandle GetTrackBoundsRgn(Track theTrack) THREEWORDINLINE(0x303C, 0x111, 0xAAAA); /** mattes - always in track space */ extern pascal PixMapHandle GetTrackMatte(Track theTrack) THREEWORDINLINE(0x303C, 0x115, 0xAAAA); extern pascal void SetTrackMatte(Track theTrack, PixMapHandle theMatte) THREEWORDINLINE(0x303C, 0x116, 0xAAAA); extern pascal void DisposeMatte(PixMapHandle theMatte) THREEWORDINLINE(0x303C, 0x14A, 0xAAAA); /************************* * calls for getting/saving movies **************************/ extern pascal Movie NewMovie(long flags) THREEWORDINLINE(0x303C, 0x187, 0xAAAA); extern pascal OSErr PutMovieIntoHandle(Movie theMovie, Handle publicMovie) TWOWORDINLINE(0x7022, 0xAAAA); extern pascal OSErr PutMovieIntoDataFork(Movie theMovie, short fRefNum, long offset, long maxSize) THREEWORDINLINE(0x303C, 0x1B4, 0xAAAA); extern pascal void DisposeMovie(Movie theMovie) TWOWORDINLINE(0x7023, 0xAAAA); /************************* * Movie State Routines **************************/ extern pascal unsigned long GetMovieCreationTime(Movie theMovie) TWOWORDINLINE(0x7026, 0xAAAA); extern pascal unsigned long GetMovieModificationTime(Movie theMovie) TWOWORDINLINE(0x7027, 0xAAAA); extern pascal TimeScale GetMovieTimeScale(Movie theMovie) TWOWORDINLINE(0x7029, 0xAAAA); extern pascal void SetMovieTimeScale(Movie theMovie, TimeScale timeScale) TWOWORDINLINE(0x702A, 0xAAAA); extern pascal TimeValue GetMovieDuration(Movie theMovie) TWOWORDINLINE(0x702B, 0xAAAA); extern pascal Fixed GetMovieRate(Movie theMovie) TWOWORDINLINE(0x702C, 0xAAAA); extern pascal void SetMovieRate(Movie theMovie, Fixed rate) TWOWORDINLINE(0x702D, 0xAAAA); extern pascal Fixed GetMoviePreferredRate(Movie theMovie) THREEWORDINLINE(0x303C, 0xF3, 0xAAAA); extern pascal void SetMoviePreferredRate(Movie theMovie, Fixed rate) THREEWORDINLINE(0x303C, 0xF4, 0xAAAA); extern pascal short GetMoviePreferredVolume(Movie theMovie) THREEWORDINLINE(0x303C, 0xF5, 0xAAAA); extern pascal void SetMoviePreferredVolume(Movie theMovie, short volume) THREEWORDINLINE(0x303C, 0xF6, 0xAAAA); extern pascal short GetMovieVolume(Movie theMovie) TWOWORDINLINE(0x702E, 0xAAAA); extern pascal void SetMovieVolume(Movie theMovie, short volume) TWOWORDINLINE(0x702F, 0xAAAA); extern pascal void GetMovieMatrix(Movie theMovie, MatrixRecord *matrix) TWOWORDINLINE(0x7031, 0xAAAA); extern pascal void SetMovieMatrix(Movie theMovie, const MatrixRecord *matrix) TWOWORDINLINE(0x7032, 0xAAAA); extern pascal void GetMoviePreviewTime(Movie theMovie, TimeValue *previewTime, TimeValue *previewDuration) TWOWORDINLINE(0x7033, 0xAAAA); extern pascal void SetMoviePreviewTime(Movie theMovie, TimeValue previewTime, TimeValue previewDuration) TWOWORDINLINE(0x7034, 0xAAAA); extern pascal TimeValue GetMoviePosterTime(Movie theMovie) TWOWORDINLINE(0x7035, 0xAAAA); extern pascal void SetMoviePosterTime(Movie theMovie, TimeValue posterTime) TWOWORDINLINE(0x7036, 0xAAAA); extern pascal void GetMovieSelection(Movie theMovie, TimeValue *selectionTime, TimeValue *selectionDuration) TWOWORDINLINE(0x7037, 0xAAAA); extern pascal void SetMovieSelection(Movie theMovie, TimeValue selectionTime, TimeValue selectionDuration) TWOWORDINLINE(0x7038, 0xAAAA); extern pascal void SetMovieActiveSegment(Movie theMovie, TimeValue startTime, TimeValue duration) THREEWORDINLINE(0x303C, 0x15C, 0xAAAA); extern pascal void GetMovieActiveSegment(Movie theMovie, TimeValue *startTime, TimeValue *duration) THREEWORDINLINE(0x303C, 0x15D, 0xAAAA); extern pascal TimeValue GetMovieTime(Movie theMovie, TimeRecord *currentTime) TWOWORDINLINE(0x7039, 0xAAAA); extern pascal void SetMovieTime(Movie theMovie, const TimeRecord *newtime) TWOWORDINLINE(0x703C, 0xAAAA); extern pascal void SetMovieTimeValue(Movie theMovie, TimeValue newtime) TWOWORDINLINE(0x703D, 0xAAAA); extern pascal UserData GetMovieUserData(Movie theMovie) TWOWORDINLINE(0x703E, 0xAAAA); /************************* * Track/Media finding routines **************************/ extern pascal long GetMovieTrackCount(Movie theMovie) TWOWORDINLINE(0x703F, 0xAAAA); extern pascal Track GetMovieTrack(Movie theMovie, long trackID) TWOWORDINLINE(0x7040, 0xAAAA); extern pascal Track GetMovieIndTrack(Movie theMovie, long index) THREEWORDINLINE(0x303C, 0x117, 0xAAAA); extern pascal Track GetMovieIndTrackType(Movie theMovie, long index, OSType trackType, long flags) THREEWORDINLINE(0x303C, 0x208, 0xAAAA); extern pascal long GetTrackID(Track theTrack) THREEWORDINLINE(0x303C, 0x127, 0xAAAA); extern pascal Movie GetTrackMovie(Track theTrack) THREEWORDINLINE(0x303C, 0xD0, 0xAAAA); /************************* * Track creation routines **************************/ extern pascal Track NewMovieTrack(Movie theMovie, Fixed width, Fixed height, short trackVolume) THREEWORDINLINE(0x303C, 0x188, 0xAAAA); extern pascal void DisposeMovieTrack(Track theTrack) TWOWORDINLINE(0x7042, 0xAAAA); /************************* * Track State routines **************************/ extern pascal unsigned long GetTrackCreationTime(Track theTrack) TWOWORDINLINE(0x7043, 0xAAAA); extern pascal unsigned long GetTrackModificationTime(Track theTrack) TWOWORDINLINE(0x7044, 0xAAAA); extern pascal Boolean GetTrackEnabled(Track theTrack) TWOWORDINLINE(0x7045, 0xAAAA); extern pascal void SetTrackEnabled(Track theTrack, Boolean isEnabled) TWOWORDINLINE(0x7046, 0xAAAA); extern pascal long GetTrackUsage(Track theTrack) TWOWORDINLINE(0x7047, 0xAAAA); extern pascal void SetTrackUsage(Track theTrack, long usage) TWOWORDINLINE(0x7048, 0xAAAA); extern pascal TimeValue GetTrackDuration(Track theTrack) TWOWORDINLINE(0x704B, 0xAAAA); extern pascal TimeValue GetTrackOffset(Track theTrack) TWOWORDINLINE(0x704C, 0xAAAA); extern pascal void SetTrackOffset(Track theTrack, TimeValue movieOffsetTime) TWOWORDINLINE(0x704D, 0xAAAA); extern pascal short GetTrackLayer(Track theTrack) TWOWORDINLINE(0x7050, 0xAAAA); extern pascal void SetTrackLayer(Track theTrack, short layer) TWOWORDINLINE(0x7051, 0xAAAA); extern pascal Track GetTrackAlternate(Track theTrack) TWOWORDINLINE(0x7052, 0xAAAA); extern pascal void SetTrackAlternate(Track theTrack, Track alternateT) TWOWORDINLINE(0x7053, 0xAAAA); extern pascal void SetAutoTrackAlternatesEnabled(Movie theMovie, Boolean enable) THREEWORDINLINE(0x303C, 0x15E, 0xAAAA); extern pascal void SelectMovieAlternates(Movie theMovie) THREEWORDINLINE(0x303C, 0x15F, 0xAAAA); extern pascal short GetTrackVolume(Track theTrack) TWOWORDINLINE(0x7054, 0xAAAA); extern pascal void SetTrackVolume(Track theTrack, short volume) TWOWORDINLINE(0x7055, 0xAAAA); extern pascal void GetTrackMatrix(Track theTrack, MatrixRecord *matrix) TWOWORDINLINE(0x7056, 0xAAAA); extern pascal void SetTrackMatrix(Track theTrack, const MatrixRecord *matrix) TWOWORDINLINE(0x7057, 0xAAAA); extern pascal void GetTrackDimensions(Track theTrack, Fixed *width, Fixed *height) TWOWORDINLINE(0x705D, 0xAAAA); extern pascal void SetTrackDimensions(Track theTrack, Fixed width, Fixed height) TWOWORDINLINE(0x705E, 0xAAAA); extern pascal UserData GetTrackUserData(Track theTrack) TWOWORDINLINE(0x705F, 0xAAAA); /************************* * get Media routines **************************/ extern pascal Media NewTrackMedia(Track theTrack, OSType mediaType, TimeScale timeScale, Handle dataRef, OSType dataRefType) THREEWORDINLINE(0x303C, 0x18E, 0xAAAA); extern pascal void DisposeTrackMedia(Media theMedia) TWOWORDINLINE(0x7061, 0xAAAA); extern pascal Media GetTrackMedia(Track theTrack) TWOWORDINLINE(0x7062, 0xAAAA); extern pascal Track GetMediaTrack(Media theMedia) THREEWORDINLINE(0x303C, 0xC5, 0xAAAA); /************************* * Media State routines **************************/ extern pascal unsigned long GetMediaCreationTime(Media theMedia) TWOWORDINLINE(0x7066, 0xAAAA); extern pascal unsigned long GetMediaModificationTime(Media theMedia) TWOWORDINLINE(0x7067, 0xAAAA); extern pascal TimeScale GetMediaTimeScale(Media theMedia) TWOWORDINLINE(0x7068, 0xAAAA); extern pascal void SetMediaTimeScale(Media theMedia, TimeScale timeScale) TWOWORDINLINE(0x7069, 0xAAAA); extern pascal TimeValue GetMediaDuration(Media theMedia) TWOWORDINLINE(0x706A, 0xAAAA); extern pascal short GetMediaLanguage(Media theMedia) TWOWORDINLINE(0x706B, 0xAAAA); extern pascal void SetMediaLanguage(Media theMedia, short language) TWOWORDINLINE(0x706C, 0xAAAA); extern pascal short GetMediaQuality(Media theMedia) TWOWORDINLINE(0x706D, 0xAAAA); extern pascal void SetMediaQuality(Media theMedia, short quality) TWOWORDINLINE(0x706E, 0xAAAA); extern pascal void GetMediaHandlerDescription(Media theMedia, OSType *mediaType, Str255 creatorName, OSType *creatorManufacturer) TWOWORDINLINE(0x706F, 0xAAAA); extern pascal UserData GetMediaUserData(Media theMedia) TWOWORDINLINE(0x7070, 0xAAAA); /************************* * Media Handler routines **************************/ extern pascal MediaHandler GetMediaHandler(Media theMedia) TWOWORDINLINE(0x7071, 0xAAAA); extern pascal OSErr SetMediaHandler(Media theMedia, MediaHandlerComponent mH) THREEWORDINLINE(0x303C, 0x190, 0xAAAA); /************************* * Media's Data routines **************************/ extern pascal OSErr BeginMediaEdits(Media theMedia) TWOWORDINLINE(0x7072, 0xAAAA); extern pascal OSErr EndMediaEdits(Media theMedia) TWOWORDINLINE(0x7073, 0xAAAA); extern pascal OSErr SetMediaDefaultDataRefIndex(Media theMedia, short index) THREEWORDINLINE(0x303C, 0x1E0, 0xAAAA); extern pascal void GetMediaDataHandlerDescription(Media theMedia, short index, OSType *dhType, Str255 creatorName, OSType *creatorManufacturer) THREEWORDINLINE(0x303C, 0x19E, 0xAAAA); extern pascal DataHandler GetMediaDataHandler(Media theMedia, short index) THREEWORDINLINE(0x303C, 0x19F, 0xAAAA); extern pascal OSErr SetMediaDataHandler(Media theMedia, short index, DataHandlerComponent dataHandler) THREEWORDINLINE(0x303C, 0x1A0, 0xAAAA); extern pascal Component GetDataHandler(Handle dataRef, OSType dataHandlerSubType, long flags) THREEWORDINLINE(0x303C, 0x1ED, 0xAAAA); /************************* * Media Sample Table Routines **************************/ extern pascal long GetMediaSampleDescriptionCount(Media theMedia) TWOWORDINLINE(0x7077, 0xAAAA); extern pascal void GetMediaSampleDescription(Media theMedia, long index, SampleDescriptionHandle descH) TWOWORDINLINE(0x7078, 0xAAAA); extern pascal OSErr SetMediaSampleDescription(Media theMedia, long index, SampleDescriptionHandle descH) THREEWORDINLINE(0x303C, 0x1D0, 0xAAAA); extern pascal long GetMediaSampleCount(Media theMedia) TWOWORDINLINE(0x7079, 0xAAAA); extern pascal void SampleNumToMediaTime(Media theMedia, long logicalSampleNum, TimeValue *sampleTime, TimeValue *sampleDuration) TWOWORDINLINE(0x707A, 0xAAAA); extern pascal void MediaTimeToSampleNum(Media theMedia, TimeValue time, long *sampleNum, TimeValue *sampleTime, TimeValue *sampleDuration) TWOWORDINLINE(0x707B, 0xAAAA); extern pascal OSErr AddMediaSample(Media theMedia, Handle dataIn, long inOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags, TimeValue *sampleTime) TWOWORDINLINE(0x707C, 0xAAAA); extern pascal OSErr AddMediaSampleReference(Media theMedia, long dataOffset, unsigned long size, TimeValue durationPerSample, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, short sampleFlags, TimeValue *sampleTime) TWOWORDINLINE(0x707D, 0xAAAA); extern pascal OSErr AddMediaSampleReferences(Media theMedia, SampleDescriptionHandle sampleDescriptionH, long numberOfSamples, SampleReferencePtr sampleRefs, TimeValue *sampleTime) THREEWORDINLINE(0x303C, 0x1F7, 0xAAAA); extern pascal OSErr GetMediaSample(Media theMedia, Handle dataOut, long maxSizeToGrow, long *size, TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample, SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex, long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags) TWOWORDINLINE(0x707E, 0xAAAA); extern pascal OSErr GetMediaSampleReference(Media theMedia, long *dataOffset, long *size, TimeValue time, TimeValue *sampleTime, TimeValue *durationPerSample, SampleDescriptionHandle sampleDescriptionH, long *sampleDescriptionIndex, long maxNumberOfSamples, long *numberOfSamples, short *sampleFlags) TWOWORDINLINE(0x707F, 0xAAAA); extern pascal OSErr SetMediaPreferredChunkSize(Media theMedia, long maxChunkSize) THREEWORDINLINE(0x303C, 0x1F8, 0xAAAA); extern pascal OSErr GetMediaPreferredChunkSize(Media theMedia, long *maxChunkSize) THREEWORDINLINE(0x303C, 0x1F9, 0xAAAA); extern pascal OSErr SetMediaShadowSync(Media theMedia, long frameDiffSampleNum, long syncSampleNum) THREEWORDINLINE(0x303C, 0x121, 0xAAAA); extern pascal OSErr GetMediaShadowSync(Media theMedia, long frameDiffSampleNum, long *syncSampleNum) THREEWORDINLINE(0x303C, 0x122, 0xAAAA); /************************* * Editing Routines **************************/ extern pascal OSErr InsertMediaIntoTrack(Track theTrack, TimeValue trackStart, TimeValue mediaTime, TimeValue mediaDuration, Fixed mediaRate) THREEWORDINLINE(0x303C, 0x183, 0xAAAA); extern pascal OSErr InsertTrackSegment(Track srcTrack, Track dstTrack, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn) THREEWORDINLINE(0x303C, 0x85, 0xAAAA); extern pascal OSErr InsertMovieSegment(Movie srcMovie, Movie dstMovie, TimeValue srcIn, TimeValue srcDuration, TimeValue dstIn) THREEWORDINLINE(0x303C, 0x86, 0xAAAA); extern pascal OSErr InsertEmptyTrackSegment(Track dstTrack, TimeValue dstIn, TimeValue dstDuration) THREEWORDINLINE(0x303C, 0x87, 0xAAAA); extern pascal OSErr InsertEmptyMovieSegment(Movie dstMovie, TimeValue dstIn, TimeValue dstDuration) THREEWORDINLINE(0x303C, 0x88, 0xAAAA); extern pascal OSErr DeleteTrackSegment(Track theTrack, TimeValue startTime, TimeValue duration) THREEWORDINLINE(0x303C, 0x89, 0xAAAA); extern pascal OSErr DeleteMovieSegment(Movie theMovie, TimeValue startTime, TimeValue duration) THREEWORDINLINE(0x303C, 0x8A, 0xAAAA); extern pascal OSErr ScaleTrackSegment(Track theTrack, TimeValue startTime, TimeValue oldDuration, TimeValue newDuration) THREEWORDINLINE(0x303C, 0x8B, 0xAAAA); extern pascal OSErr ScaleMovieSegment(Movie theMovie, TimeValue startTime, TimeValue oldDuration, TimeValue newDuration) THREEWORDINLINE(0x303C, 0x8C, 0xAAAA); /************************* * Hi-level Editing Routines **************************/ extern pascal Movie CutMovieSelection(Movie theMovie) THREEWORDINLINE(0x303C, 0x8D, 0xAAAA); extern pascal Movie CopyMovieSelection(Movie theMovie) THREEWORDINLINE(0x303C, 0x8E, 0xAAAA); extern pascal void PasteMovieSelection(Movie theMovie, Movie src) THREEWORDINLINE(0x303C, 0x8F, 0xAAAA); extern pascal void AddMovieSelection(Movie theMovie, Movie src) THREEWORDINLINE(0x303C, 0x152, 0xAAAA); extern pascal void ClearMovieSelection(Movie theMovie) THREEWORDINLINE(0x303C, 0xE1, 0xAAAA); extern pascal OSErr PasteHandleIntoMovie(Handle h, OSType handleType, Movie theMovie, long flags, ComponentInstance userComp) THREEWORDINLINE(0x303C, 0xCB, 0xAAAA); extern pascal OSErr PutMovieIntoTypedHandle(Movie theMovie, Track targetTrack, OSType handleType, Handle publicMovie, TimeValue start, TimeValue dur, long flags, ComponentInstance userComp) THREEWORDINLINE(0x303C, 0x1CD, 0xAAAA); extern pascal Component IsScrapMovie(Track targetTrack) THREEWORDINLINE(0x303C, 0xCC, 0xAAAA); /************************* * Middle-level Editing Routines **************************/ extern pascal OSErr CopyTrackSettings(Track srcTrack, Track dstTrack) THREEWORDINLINE(0x303C, 0x153, 0xAAAA); extern pascal OSErr CopyMovieSettings(Movie srcMovie, Movie dstMovie) THREEWORDINLINE(0x303C, 0x154, 0xAAAA); extern pascal OSErr AddEmptyTrackToMovie(Track srcTrack, Movie dstMovie, Handle dataRef, OSType dataRefType, Track *dstTrack) TWOWORDINLINE(0x7074, 0xAAAA); /************************* * movie & track edit state routines **************************/ extern pascal MovieEditState NewMovieEditState(Movie theMovie) THREEWORDINLINE(0x303C, 0x104, 0xAAAA); extern pascal OSErr UseMovieEditState(Movie theMovie, MovieEditState toState) THREEWORDINLINE(0x303C, 0x105, 0xAAAA); extern pascal OSErr DisposeMovieEditState(MovieEditState state) THREEWORDINLINE(0x303C, 0x106, 0xAAAA); extern pascal TrackEditState NewTrackEditState(Track theTrack) THREEWORDINLINE(0x303C, 0x107, 0xAAAA); extern pascal OSErr UseTrackEditState(Track theTrack, TrackEditState state) THREEWORDINLINE(0x303C, 0x108, 0xAAAA); extern pascal OSErr DisposeTrackEditState(TrackEditState state) THREEWORDINLINE(0x303C, 0x109, 0xAAAA); /************************* * track reference routines **************************/ extern pascal OSErr AddTrackReference(Track theTrack, Track refTrack, OSType refType, long *addedIndex) THREEWORDINLINE(0x303C, 0x1F0, 0xAAAA); extern pascal OSErr DeleteTrackReference(Track theTrack, OSType refType, long index) THREEWORDINLINE(0x303C, 0x1F1, 0xAAAA); extern pascal OSErr SetTrackReference(Track theTrack, Track refTrack, OSType refType, long index) THREEWORDINLINE(0x303C, 0x1F2, 0xAAAA); extern pascal Track GetTrackReference(Track theTrack, OSType refType, long index) THREEWORDINLINE(0x303C, 0x1F3, 0xAAAA); extern pascal OSType GetNextTrackReferenceType(Track theTrack, OSType refType) THREEWORDINLINE(0x303C, 0x1F4, 0xAAAA); extern pascal long GetTrackReferenceCount(Track theTrack, OSType refType) THREEWORDINLINE(0x303C, 0x1F5, 0xAAAA); /************************* * high level file conversion routines **************************/ extern pascal OSErr ConvertFileToMovieFile(const FSSpec *inputFile, const FSSpec *outputFile, OSType creator, ScriptCode scriptTag, short *resID, long flags, ComponentInstance userComp, MovieProgressUPP proc, long refCon) THREEWORDINLINE(0x303C, 0x1CB, 0xAAAA); extern pascal OSErr ConvertMovieToFile(Movie theMovie, Track onlyTrack, FSSpec *outputFile, OSType fileType, OSType creator, ScriptCode scriptTag, short *resID, long flags, ComponentInstance userComp) THREEWORDINLINE(0x303C, 0x1CC, 0xAAAA); /************************* * Movie Timebase Conversion Routines **************************/ extern pascal TimeValue TrackTimeToMediaTime(TimeValue value, Track theTrack) THREEWORDINLINE(0x303C, 0x96, 0xAAAA); extern pascal Fixed GetTrackEditRate(Track theTrack, TimeValue atTime) THREEWORDINLINE(0x303C, 0x123, 0xAAAA); /************************* * Miscellaneous Routines **************************/ extern pascal long GetMovieDataSize(Movie theMovie, TimeValue startTime, TimeValue duration) THREEWORDINLINE(0x303C, 0x98, 0xAAAA); extern pascal long GetTrackDataSize(Track theTrack, TimeValue startTime, TimeValue duration) THREEWORDINLINE(0x303C, 0x149, 0xAAAA); extern pascal long GetMediaDataSize(Media theMedia, TimeValue startTime, TimeValue duration) THREEWORDINLINE(0x303C, 0x99, 0xAAAA); extern pascal Boolean PtInMovie(Movie theMovie, Point pt) THREEWORDINLINE(0x303C, 0x9A, 0xAAAA); extern pascal Boolean PtInTrack(Track theTrack, Point pt) THREEWORDINLINE(0x303C, 0x9B, 0xAAAA); /************************* * Group Selection Routines **************************/ extern pascal void SetMovieLanguage(Movie theMovie, long language) THREEWORDINLINE(0x303C, 0x9C, 0xAAAA); /************************* * User Data **************************/ extern pascal OSErr GetUserData(UserData theUserData, Handle data, OSType udType, long index) THREEWORDINLINE(0x303C, 0x9E, 0xAAAA); extern pascal OSErr AddUserData(UserData theUserData, Handle data, OSType udType) THREEWORDINLINE(0x303C, 0x9F, 0xAAAA); extern pascal OSErr RemoveUserData(UserData theUserData, OSType udType, long index) THREEWORDINLINE(0x303C, 0xA0, 0xAAAA); extern pascal short CountUserDataType(UserData theUserData, OSType udType) THREEWORDINLINE(0x303C, 0x14B, 0xAAAA); extern pascal long GetNextUserDataType(UserData theUserData, OSType udType) THREEWORDINLINE(0x303C, 0x1A5, 0xAAAA); extern pascal OSErr GetUserDataItem(UserData theUserData, void *data, long size, OSType udType, long index) THREEWORDINLINE(0x303C, 0x126, 0xAAAA); extern pascal OSErr SetUserDataItem(UserData theUserData, void *data, long size, OSType udType, long index) THREEWORDINLINE(0x303C, 0x12E, 0xAAAA); extern pascal OSErr AddUserDataText(UserData theUserData, Handle data, OSType udType, long index, short itlRegionTag) THREEWORDINLINE(0x303C, 0x14C, 0xAAAA); extern pascal OSErr GetUserDataText(UserData theUserData, Handle data, OSType udType, long index, short itlRegionTag) THREEWORDINLINE(0x303C, 0x14D, 0xAAAA); extern pascal OSErr RemoveUserDataText(UserData theUserData, OSType udType, long index, short itlRegionTag) THREEWORDINLINE(0x303C, 0x14E, 0xAAAA); extern pascal OSErr NewUserData(UserData *theUserData) THREEWORDINLINE(0x303C, 0x12F, 0xAAAA); extern pascal OSErr DisposeUserData(UserData theUserData) THREEWORDINLINE(0x303C, 0x130, 0xAAAA); extern pascal OSErr NewUserDataFromHandle(Handle h, UserData *theUserData) THREEWORDINLINE(0x303C, 0x131, 0xAAAA); extern pascal OSErr PutUserDataIntoHandle(UserData theUserData, Handle h) THREEWORDINLINE(0x303C, 0x132, 0xAAAA); extern pascal void GetMediaNextInterestingTime(Media theMedia, short interestingTimeFlags, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration) THREEWORDINLINE(0x303C, 0x16D, 0xAAAA); extern pascal void GetTrackNextInterestingTime(Track theTrack, short interestingTimeFlags, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration) THREEWORDINLINE(0x303C, 0xE2, 0xAAAA); extern pascal void GetMovieNextInterestingTime(Movie theMovie, short interestingTimeFlags, short numMediaTypes, const OSType *whichMediaTypes, TimeValue time, Fixed rate, TimeValue *interestingTime, TimeValue *interestingDuration) THREEWORDINLINE(0x303C, 0x10E, 0xAAAA); extern pascal OSErr CreateMovieFile(const FSSpec *fileSpec, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, short *resRefNum, Movie *newmovie) THREEWORDINLINE(0x303C, 0x191, 0xAAAA); extern pascal OSErr OpenMovieFile(const FSSpec *fileSpec, short *resRefNum, SInt8 permission) THREEWORDINLINE(0x303C, 0x192, 0xAAAA); extern pascal OSErr CloseMovieFile(short resRefNum) THREEWORDINLINE(0x303C, 0xD5, 0xAAAA); extern pascal OSErr DeleteMovieFile(const FSSpec *fileSpec) THREEWORDINLINE(0x303C, 0x175, 0xAAAA); extern pascal OSErr NewMovieFromFile(Movie *theMovie, short resRefNum, short *resId, StringPtr resName, short newMovieFlags, Boolean *dataRefWasChanged) THREEWORDINLINE(0x303C, 0xF0, 0xAAAA); extern pascal OSErr NewMovieFromHandle(Movie *theMovie, Handle h, short newMovieFlags, Boolean *dataRefWasChanged) THREEWORDINLINE(0x303C, 0xF1, 0xAAAA); extern pascal OSErr NewMovieFromDataFork(Movie *theMovie, short fRefNum, long fileOffset, short newMovieFlags, Boolean *dataRefWasChanged) THREEWORDINLINE(0x303C, 0x1B3, 0xAAAA); extern pascal OSErr NewMovieFromUserProc(Movie *m, short flags, Boolean *dataRefWasChanged, GetMovieUPP getProc, void *refCon, Handle defaultDataRef, OSType dataRefType) THREEWORDINLINE(0x303C, 0x1EC, 0xAAAA); extern pascal OSErr AddMovieResource(Movie theMovie, short resRefNum, short *resId, ConstStr255Param resName) THREEWORDINLINE(0x303C, 0xD7, 0xAAAA); extern pascal OSErr UpdateMovieResource(Movie theMovie, short resRefNum, short resId, ConstStr255Param resName) THREEWORDINLINE(0x303C, 0xD8, 0xAAAA); extern pascal OSErr RemoveMovieResource(short resRefNum, short resId) THREEWORDINLINE(0x303C, 0x176, 0xAAAA); extern pascal Boolean HasMovieChanged(Movie theMovie) THREEWORDINLINE(0x303C, 0xD9, 0xAAAA); extern pascal void ClearMovieChanged(Movie theMovie) THREEWORDINLINE(0x303C, 0x113, 0xAAAA); extern pascal OSErr SetMovieDefaultDataRef(Movie theMovie, Handle dataRef, OSType dataRefType) THREEWORDINLINE(0x303C, 0x1C1, 0xAAAA); extern pascal OSErr GetMovieDefaultDataRef(Movie theMovie, Handle *dataRef, OSType *dataRefType) THREEWORDINLINE(0x303C, 0x1D2, 0xAAAA); extern pascal OSErr SetMovieColorTable(Movie theMovie, CTabHandle ctab) THREEWORDINLINE(0x303C, 0x205, 0xAAAA); extern pascal OSErr GetMovieColorTable(Movie theMovie, CTabHandle *ctab) THREEWORDINLINE(0x303C, 0x206, 0xAAAA); extern pascal void FlattenMovie(Movie theMovie, long movieFlattenFlags, const FSSpec *theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags, short *resId, ConstStr255Param resName) THREEWORDINLINE(0x303C, 0x19B, 0xAAAA); extern pascal Movie FlattenMovieData(Movie theMovie, long movieFlattenFlags, const FSSpec *theFile, OSType creator, ScriptCode scriptTag, long createMovieFileFlags) THREEWORDINLINE(0x303C, 0x19C, 0xAAAA); extern pascal void SetMovieProgressProc(Movie theMovie, MovieProgressUPP p, long refcon) THREEWORDINLINE(0x303C, 0x19A, 0xAAAA); /************************* * Video Media routines **************************/ extern pascal HandlerError GetVideoMediaGraphicsMode(MediaHandler mh, long *graphicsMode, RGBColor *opColor) FIVEWORDINLINE(0x2F3C, 0x8, 0x101, 0x7000, 0xA82A); extern pascal HandlerError SetVideoMediaGraphicsMode(MediaHandler mh, long graphicsMode, const RGBColor *opColor) FIVEWORDINLINE(0x2F3C, 0x8, 0x102, 0x7000, 0xA82A); /************************* * Sound Media routines **************************/ extern pascal HandlerError GetSoundMediaBalance(MediaHandler mh, short *balance) FIVEWORDINLINE(0x2F3C, 0x4, 0x101, 0x7000, 0xA82A); extern pascal HandlerError SetSoundMediaBalance(MediaHandler mh, short balance) FIVEWORDINLINE(0x2F3C, 0x2, 0x102, 0x7000, 0xA82A); /************************* * Text Media routines **************************/ /* Return displayFlags for TextProc */ enum { txtProcDefaultDisplay = 0, /* Use the media's default*/ txtProcDontDisplay = 1, /* Don't display the text*/ txtProcDoDisplay = 2 /* Do display the text*/ }; extern pascal ComponentResult SetTextProc(MediaHandler mh, TextMediaUPP TextProc, long refcon) FIVEWORDINLINE(0x2F3C, 0x8, 0x101, 0x7000, 0xA82A); extern pascal ComponentResult AddTextSample(MediaHandler mh, Ptr text, unsigned long size, short fontNumber, short fontSize, short textFace, RGBColor *textColor, RGBColor *backColor, short textJustification, Rect *textBox, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime) FIVEWORDINLINE(0x2F3C, 0x34, 0x102, 0x7000, 0xA82A); extern pascal ComponentResult AddTESample(MediaHandler mh, TEHandle hTE, RGBColor *backColor, short textJustification, Rect *textBox, long displayFlags, TimeValue scrollDelay, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime) FIVEWORDINLINE(0x2F3C, 0x26, 0x103, 0x7000, 0xA82A); extern pascal ComponentResult AddHiliteSample(MediaHandler mh, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor, TimeValue duration, TimeValue *sampleTime) FIVEWORDINLINE(0x2F3C, 0x10, 0x104, 0x7000, 0xA82A); enum { findTextEdgeOK = 1 << 0, /* Okay to find text at specified sample time*/ findTextCaseSensitive = 1 << 1, /* Case sensitive search*/ findTextReverseSearch = 1 << 2, /* Search from sampleTime backwards*/ findTextWrapAround = 1 << 3, /* Wrap search when beginning or end of movie is hit*/ findTextUseOffset = 1 << 4 /* Begin search at the given character offset into sample rather than edge*/ }; extern pascal ComponentResult FindNextText(MediaHandler mh, Ptr text, long size, short findFlags, TimeValue startTime, TimeValue *foundTime, TimeValue *foundDuration, long *offset) FIVEWORDINLINE(0x2F3C, 0x1A, 0x105, 0x7000, 0xA82A); extern pascal ComponentResult HiliteTextSample(MediaHandler mh, TimeValue sampleTime, short hiliteStart, short hiliteEnd, RGBColor *rgbHiliteColor) FIVEWORDINLINE(0x2F3C, 0xC, 0x106, 0x7000, 0xA82A); enum { dropShadowOffsetType = 'drpo', dropShadowTranslucencyType = 'drpt' }; extern pascal ComponentResult SetTextSampleData(MediaHandler mh, void *data, OSType dataType) FIVEWORDINLINE(0x2F3C, 0x8, 0x107, 0x7000, 0xA82A); extern pascal OSErr MovieSearchText(Movie theMovie, Ptr text, long size, long searchFlags, Track *searchTrack, TimeValue *searchTime, long *searchOffset) THREEWORDINLINE(0x303C, 0x207, 0xAAAA); extern pascal void GetPosterBox(Movie theMovie, Rect *boxRect) THREEWORDINLINE(0x303C, 0x16F, 0xAAAA); extern pascal void SetPosterBox(Movie theMovie, const Rect *boxRect) THREEWORDINLINE(0x303C, 0x170, 0xAAAA); extern pascal RgnHandle GetMovieSegmentDisplayBoundsRgn(Movie theMovie, TimeValue time, TimeValue duration) THREEWORDINLINE(0x303C, 0x16C, 0xAAAA); extern pascal RgnHandle GetTrackSegmentDisplayBoundsRgn(Track theTrack, TimeValue time, TimeValue duration) THREEWORDINLINE(0x303C, 0x16B, 0xAAAA); extern pascal void SetMovieCoverProcs(Movie theMovie, MovieRgnCoverUPP uncoverProc, MovieRgnCoverUPP coverProc, long refcon) THREEWORDINLINE(0x303C, 0x179, 0xAAAA); extern pascal OSErr GetMovieCoverProcs(Movie theMovie, MovieRgnCoverUPP *uncoverProc, MovieRgnCoverUPP *coverProc, long *refcon) THREEWORDINLINE(0x303C, 0x1DD, 0xAAAA); extern pascal ComponentResult GetTrackStatus(Track theTrack) THREEWORDINLINE(0x303C, 0x172, 0xAAAA); extern pascal ComponentResult GetMovieStatus(Movie theMovie, Track *firstProblemTrack) THREEWORDINLINE(0x303C, 0x173, 0xAAAA); /**** Movie Controller support routines ****/ extern pascal ComponentInstance NewMovieController(Movie theMovie, const Rect *movieRect, long someFlags) THREEWORDINLINE(0x303C, 0x18A, 0xAAAA); extern pascal void DisposeMovieController(ComponentInstance mc) THREEWORDINLINE(0x303C, 0x18B, 0xAAAA); extern pascal void ShowMovieInformation(Movie theMovie, ModalFilterUPP filterProc, long refCon) THREEWORDINLINE(0x303C, 0x209, 0xAAAA); /***** Scrap routines *****/ extern pascal OSErr PutMovieOnScrap(Movie theMovie, long movieScrapFlags) THREEWORDINLINE(0x303C, 0x18C, 0xAAAA); extern pascal Movie NewMovieFromScrap(long newMovieFlags) THREEWORDINLINE(0x303C, 0x18D, 0xAAAA); /***** DataRef routines *****/ extern pascal OSErr GetMediaDataRef(Media theMedia, short index, Handle *dataRef, OSType *dataRefType, long *dataRefAttributes) THREEWORDINLINE(0x303C, 0x197, 0xAAAA); extern pascal OSErr SetMediaDataRef(Media theMedia, short index, Handle dataRef, OSType dataRefType) THREEWORDINLINE(0x303C, 0x1C9, 0xAAAA); extern pascal OSErr SetMediaDataRefAttributes(Media theMedia, short index, long dataRefAttributes) THREEWORDINLINE(0x303C, 0x1CA, 0xAAAA); extern pascal OSErr AddMediaDataRef(Media theMedia, short *index, Handle dataRef, OSType dataRefType) THREEWORDINLINE(0x303C, 0x198, 0xAAAA); extern pascal OSErr GetMediaDataRefCount(Media theMedia, short *count) THREEWORDINLINE(0x303C, 0x199, 0xAAAA); /***** Playback hint routines *****/ extern pascal void SetMoviePlayHints(Movie theMovie, long flags, long flagsMask) THREEWORDINLINE(0x303C, 0x1A1, 0xAAAA); extern pascal void SetMediaPlayHints(Media theMedia, long flags, long flagsMask) THREEWORDINLINE(0x303C, 0x1A2, 0xAAAA); /***** Load time track hints *****/ enum { preloadAlways = 1L << 0, preloadOnlyIfEnabled = 1L << 1 }; extern pascal void SetTrackLoadSettings(Track theTrack, TimeValue preloadTime, TimeValue preloadDuration, long preloadFlags, long defaultHints) THREEWORDINLINE(0x303C, 0x1E3, 0xAAAA); extern pascal void GetTrackLoadSettings(Track theTrack, TimeValue *preloadTime, TimeValue *preloadDuration, long *preloadFlags, long *defaultHints) THREEWORDINLINE(0x303C, 0x1E4, 0xAAAA); enum { MovieControllerComponentType = 'play' }; typedef ComponentInstance MovieController; enum { mcActionIdle = 1, /* no param*/ mcActionDraw = 2, /* param is WindowPtr*/ mcActionActivate = 3, /* no param*/ mcActionDeactivate = 4, /* no param*/ mcActionMouseDown = 5, /* param is pointer to EventRecord*/ mcActionKey = 6, /* param is pointer to EventRecord*/ mcActionPlay = 8, /* param is Fixed, play rate*/ mcActionGoToTime = 12, /* param is TimeRecord*/ mcActionSetVolume = 14, /* param is a short*/ mcActionGetVolume = 15, /* param is pointer to a short*/ mcActionStep = 18, /* param is number of steps (short)*/ mcActionSetLooping = 21, /* param is Boolean*/ mcActionGetLooping = 22, /* param is pointer to a Boolean*/ mcActionSetLoopIsPalindrome = 23, /* param is Boolean*/ mcActionGetLoopIsPalindrome = 24, /* param is pointer to a Boolean*/ mcActionSetGrowBoxBounds = 25, /* param is a Rect*/ mcActionControllerSizeChanged = 26, /* no param*/ mcActionSetSelectionBegin = 29, /* param is TimeRecord*/ mcActionSetSelectionDuration = 30, /* param is TimeRecord, action only taken on set-duration*/ mcActionSetKeysEnabled = 32, /* param is Boolean*/ mcActionGetKeysEnabled = 33, /* param is pointer to Boolean*/ mcActionSetPlaySelection = 34, /* param is Boolean*/ mcActionGetPlaySelection = 35, /* param is pointer to Boolean*/ mcActionSetUseBadge = 36, /* param is Boolean*/ mcActionGetUseBadge = 37, /* param is pointer to Boolean*/ mcActionSetFlags = 38, /* param is long of flags*/ mcActionGetFlags = 39, /* param is pointer to a long of flags*/ mcActionSetPlayEveryFrame = 40, /* param is Boolean*/ mcActionGetPlayEveryFrame = 41, /* param is pointer to Boolean*/ mcActionGetPlayRate = 42, /* param is pointer to Fixed*/ mcActionShowBalloon = 43, /* param is a pointer to a boolean. set to false to stop balloon*/ mcActionBadgeClick = 44, /* param is pointer to Boolean. set to false to ignore click*/ mcActionMovieClick = 45, /* param is pointer to event record. change “what” to nullEvt to kill click*/ mcActionSuspend = 46, /* no param*/ mcActionResume = 47, /* no param*/ mcActionSetControllerKeysEnabled = 48, /* param is Boolean*/ mcActionGetTimeSliderRect = 49, /* param is pointer to rect*/ mcActionMovieEdited = 50, /* no param*/ mcActionGetDragEnabled = 51, /* param is pointer to Boolean*/ mcActionSetDragEnabled = 52 /* param is Boolean*/ }; typedef short mcAction; enum { mcFlagSuppressMovieFrame = 1 << 0, mcFlagSuppressStepButtons = 1 << 1, mcFlagSuppressSpeakerButton = 1 << 2, mcFlagsUseWindowPalette = 1 << 3, mcFlagsDontInvalidate = 1 << 4 }; enum { mcPositionDontInvalidate = 1 << 5 }; typedef unsigned long mcFlags; typedef pascal Boolean (*MCActionFilterProcPtr)(MovieController mc, short *action, void *params); typedef pascal Boolean (*MCActionFilterWithRefConProcPtr)(MovieController mc, short action, void *params, long refCon); #if GENERATINGCFM typedef UniversalProcPtr MCActionFilterUPP; typedef UniversalProcPtr MCActionFilterWithRefConUPP; #else typedef MCActionFilterProcPtr MCActionFilterUPP; typedef MCActionFilterWithRefConProcPtr MCActionFilterWithRefConUPP; #endif enum { mcInfoUndoAvailable = 1 << 0, mcInfoCutAvailable = 1 << 1, mcInfoCopyAvailable = 1 << 2, mcInfoPasteAvailable = 1 << 3, mcInfoClearAvailable = 1 << 4, mcInfoHasSound = 1 << 5, mcInfoIsPlaying = 1 << 6, mcInfoIsLooping = 1 << 7, mcInfoIsInPalindrome = 1 << 8, mcInfoEditingEnabled = 1 << 9 }; /* menu item codes*/ enum { mcMenuUndo = 1, mcMenuCut = 3, mcMenuCopy = 4, mcMenuPaste = 5, mcMenuClear = 6 }; /* target management */ extern pascal ComponentResult MCSetMovie(MovieController mc, Movie theMovie, WindowPtr movieWindow, Point where) FIVEWORDINLINE(0x2F3C, 0xC, 0x2, 0x7000, 0xA82A); extern pascal Movie MCGetIndMovie(MovieController mc, short index) FIVEWORDINLINE(0x2F3C, 0x2, 0x5, 0x7000, 0xA82A); #define MCGetMovie(mc) MCGetIndMovie(mc, 0) extern pascal ComponentResult MCRemoveMovie(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0x6, 0x7000, 0xA82A); /* event handling etc. */ extern pascal ComponentResult MCIsPlayerEvent(MovieController mc, const EventRecord *e) FIVEWORDINLINE(0x2F3C, 0x4, 0x7, 0x7000, 0xA82A); /* obsolete. use MCSetActionFilterWithRefCon instead. */ extern pascal ComponentResult MCSetActionFilter(MovieController mc, MCActionFilterUPP blob) FIVEWORDINLINE(0x2F3C, 0x4, 0x8, 0x7000, 0xA82A); /* proc is of the form: Boolean userPlayerFilter(MovieController mc, short *action, void *params) = proc returns TRUE if it handles the action, FALSE if not action is passed as a VAR so that it could be changed by filter (ick) this is consistent with the current dialog manager stuff params is any potential parameters that go with the action <triple ick> such as set playback rate to xxx. */ extern pascal ComponentResult MCDoAction(MovieController mc, short action, void *params) FIVEWORDINLINE(0x2F3C, 0x6, 0x9, 0x7000, 0xA82A); /* state type things */ extern pascal ComponentResult MCSetControllerAttached(MovieController mc, Boolean attach) FIVEWORDINLINE(0x2F3C, 0x2, 0xA, 0x7000, 0xA82A); extern pascal ComponentResult MCIsControllerAttached(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0xB, 0x7000, 0xA82A); extern pascal ComponentResult MCSetControllerPort(MovieController mc, CGrafPtr gp) FIVEWORDINLINE(0x2F3C, 0x4, 0xC, 0x7000, 0xA82A); extern pascal CGrafPtr MCGetControllerPort(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0xD, 0x7000, 0xA82A); extern pascal ComponentResult MCSetVisible(MovieController mc, Boolean visible) FIVEWORDINLINE(0x2F3C, 0x2, 0xE, 0x7000, 0xA82A); extern pascal ComponentResult MCGetVisible(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0xF, 0x7000, 0xA82A); extern pascal ComponentResult MCGetControllerBoundsRect(MovieController mc, Rect *bounds) FIVEWORDINLINE(0x2F3C, 0x4, 0x10, 0x7000, 0xA82A); extern pascal ComponentResult MCSetControllerBoundsRect(MovieController mc, const Rect *bounds) FIVEWORDINLINE(0x2F3C, 0x4, 0x11, 0x7000, 0xA82A); extern pascal RgnHandle MCGetControllerBoundsRgn(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0x12, 0x7000, 0xA82A); extern pascal RgnHandle MCGetWindowRgn(MovieController mc, WindowPtr w) FIVEWORDINLINE(0x2F3C, 0x4, 0x13, 0x7000, 0xA82A); /* other stuff */ extern pascal ComponentResult MCMovieChanged(MovieController mc, Movie m) FIVEWORDINLINE(0x2F3C, 0x4, 0x14, 0x7000, 0xA82A); /* called when the app has changed thing about the movie (like bounding rect) or rate. So that we can update our graphical (and internal) state accordingly. */ extern pascal ComponentResult MCSetDuration(MovieController mc, TimeValue duration) FIVEWORDINLINE(0x2F3C, 0x4, 0x15, 0x7000, 0xA82A); /* duration to use for time slider -- will be reset next time MCMovieChanged is called or MCSetMovie is called */ extern pascal TimeValue MCGetCurrentTime(MovieController mc, TimeScale *scale) FIVEWORDINLINE(0x2F3C, 0x4, 0x16, 0x7000, 0xA82A); /* returns the time value and the time scale it is on. if there are no movies, the time scale is passed back as 0. scale is an optional parameter */ extern pascal ComponentResult MCNewAttachedController(MovieController mc, Movie theMovie, WindowPtr w, Point where) FIVEWORDINLINE(0x2F3C, 0xC, 0x17, 0x7000, 0xA82A); /* makes m the only movie attached to the controller. makes the controller visible. the window and where parameters are passed a long to MCSetMovie and behave as described there */ extern pascal ComponentResult MCDraw(MovieController mc, WindowPtr w) FIVEWORDINLINE(0x2F3C, 0x4, 0x18, 0x7000, 0xA82A); extern pascal ComponentResult MCActivate(MovieController mc, WindowPtr w, Boolean activate) FIVEWORDINLINE(0x2F3C, 0x6, 0x19, 0x7000, 0xA82A); extern pascal ComponentResult MCIdle(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0x1A, 0x7000, 0xA82A); extern pascal ComponentResult MCKey(MovieController mc, SInt8 key, long modifiers) FIVEWORDINLINE(0x2F3C, 0x6, 0x1B, 0x7000, 0xA82A); extern pascal ComponentResult MCClick(MovieController mc, WindowPtr w, Point where, long when, long modifiers) FIVEWORDINLINE(0x2F3C, 0x10, 0x1C, 0x7000, 0xA82A); /* calls for editing */ extern pascal ComponentResult MCEnableEditing(MovieController mc, Boolean enabled) FIVEWORDINLINE(0x2F3C, 0x2, 0x1D, 0x7000, 0xA82A); extern pascal long MCIsEditingEnabled(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0x1E, 0x7000, 0xA82A); extern pascal Movie MCCopy(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0x1F, 0x7000, 0xA82A); extern pascal Movie MCCut(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0x20, 0x7000, 0xA82A); extern pascal ComponentResult MCPaste(MovieController mc, Movie srcMovie) FIVEWORDINLINE(0x2F3C, 0x4, 0x21, 0x7000, 0xA82A); extern pascal ComponentResult MCClear(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0x22, 0x7000, 0xA82A); extern pascal ComponentResult MCUndo(MovieController mc) FIVEWORDINLINE(0x2F3C, 0, 0x23, 0x7000, 0xA82A); /* * somewhat special stuff */ extern pascal ComponentResult MCPositionController(MovieController mc, const Rect *movieRect, const Rect *controllerRect, long someFlags) FIVEWORDINLINE(0x2F3C, 0xC, 0x24, 0x7000, 0xA82A); extern pascal ComponentResult MCGetControllerInfo(MovieController mc, long *someFlags) FIVEWORDINLINE(0x2F3C, 0x4, 0x25, 0x7000, 0xA82A); extern pascal ComponentResult MCSetClip(MovieController mc, RgnHandle theClip, RgnHandle movieClip) FIVEWORDINLINE(0x2F3C, 0x8, 0x28, 0x7000, 0xA82A); extern pascal ComponentResult MCGetClip(MovieController mc, RgnHandle *theClip, RgnHandle *movieClip) FIVEWORDINLINE(0x2F3C, 0x8, 0x29, 0x7000, 0xA82A); extern pascal ComponentResult MCDrawBadge(MovieController mc, RgnHandle movieRgn, RgnHandle *badgeRgn) FIVEWORDINLINE(0x2F3C, 0x8, 0x2A, 0x7000, 0xA82A); extern pascal ComponentResult MCSetUpEditMenu(MovieController mc, long modifiers, MenuHandle mh) FIVEWORDINLINE(0x2F3C, 0x8, 0x2B, 0x7000, 0xA82A); extern pascal ComponentResult MCGetMenuString(MovieController mc, long modifiers, short item, Str255 aString) FIVEWORDINLINE(0x2F3C, 0xA, 0x2C, 0x7000, 0xA82A); extern pascal ComponentResult MCSetActionFilterWithRefCon(MovieController mc, MCActionFilterWithRefConUPP blob, long refCon) FIVEWORDINLINE(0x2F3C, 0x8, 0x2D, 0x7000, 0xA82A); enum { kMCSetMovieSelect = 0x2, kMCGetIndMovieSelect = 0x5, kMCRemoveMovieSelect = 0x6, kMCIsPlayerEventSelect = 0x7, kMCSetActionFilterSelect = 0x8, kMCDoActionSelect = 0x9, kMCSetControllerAttachedSelect = 0xA, kMCIsControllerAttachedSelect = 0xB, kMCSetControllerPortSelect = 0xC, kMCGetControllerPortSelect = 0xD, kMCSetVisibleSelect = 0xE, kMCGetVisibleSelect = 0xF, kMCGetControllerBoundsRectSelect = 0x10, kMCSetControllerBoundsRectSelect = 0x11, kMCGetControllerBoundsRgnSelect = 0x12, kMCGetWindowRgnSelect = 0x13, kMCMovieChangedSelect = 0x14, kMCSetDurationSelect = 0x15, kMCGetCurrentTimeSelect = 0x16, kMCNewAttachedControllerSelect = 0x17, kMCDrawSelect = 0x18, kMCActivateSelect = 0x19, kMCIdleSelect = 0x1A, kMCKeySelect = 0x1B, kMCClickSelect = 0x1C, kMCEnableEditingSelect = 0x1D, kMCIsEditingEnabledSelect = 0x1E, kMCCopySelect = 0x1F, kMCCutSelect = 0x20, kMCPasteSelect = 0x21, kMCClearSelect = 0x22, kMCUndoSelect = 0x23, kMCPositionControllerSelect = 0x24, kMCGetControllerInfoSelect = 0x25, kMCSetClipSelect = 0x28, kMCGetClipSelect = 0x29, kMCDrawBadgeSelect = 0x2A, kMCSetUpEditMenuSelect = 0x2B, kMCGetMenuStringSelect = 0x2C, kMCSetActionFilterWithRefConSelect = 0x2D }; /**************************************** * * * T I M E B A S E * * * ****************************************/ extern pascal TimeBase NewTimeBase(void) THREEWORDINLINE(0x303C, 0xA5, 0xAAAA); extern pascal void DisposeTimeBase(TimeBase tb) THREEWORDINLINE(0x303C, 0xB6, 0xAAAA); extern pascal TimeValue GetTimeBaseTime(TimeBase tb, TimeScale s, TimeRecord *tr) THREEWORDINLINE(0x303C, 0xA6, 0xAAAA); extern pascal void SetTimeBaseTime(TimeBase tb, const TimeRecord *tr) THREEWORDINLINE(0x303C, 0xA7, 0xAAAA); extern pascal void SetTimeBaseValue(TimeBase tb, TimeValue t, TimeScale s) THREEWORDINLINE(0x303C, 0xA8, 0xAAAA); extern pascal Fixed GetTimeBaseRate(TimeBase tb) THREEWORDINLINE(0x303C, 0xA9, 0xAAAA); extern pascal void SetTimeBaseRate(TimeBase tb, Fixed r) THREEWORDINLINE(0x303C, 0xAA, 0xAAAA); extern pascal TimeValue GetTimeBaseStartTime(TimeBase tb, TimeScale s, TimeRecord *tr) THREEWORDINLINE(0x303C, 0xAB, 0xAAAA); extern pascal void SetTimeBaseStartTime(TimeBase tb, const TimeRecord *tr) THREEWORDINLINE(0x303C, 0xAC, 0xAAAA); extern pascal TimeValue GetTimeBaseStopTime(TimeBase tb, TimeScale s, TimeRecord *tr) THREEWORDINLINE(0x303C, 0xAD, 0xAAAA); extern pascal void SetTimeBaseStopTime(TimeBase tb, const TimeRecord *tr) THREEWORDINLINE(0x303C, 0xAE, 0xAAAA); extern pascal long GetTimeBaseFlags(TimeBase tb) THREEWORDINLINE(0x303C, 0xB1, 0xAAAA); extern pascal void SetTimeBaseFlags(TimeBase tb, long timeBaseFlags) THREEWORDINLINE(0x303C, 0xB2, 0xAAAA); extern pascal void SetTimeBaseMasterTimeBase(TimeBase slave, TimeBase master, const TimeRecord *slaveZero) THREEWORDINLINE(0x303C, 0xB4, 0xAAAA); extern pascal TimeBase GetTimeBaseMasterTimeBase(TimeBase tb) THREEWORDINLINE(0x303C, 0xAF, 0xAAAA); extern pascal void SetTimeBaseMasterClock(TimeBase slave, Component clockMeister, const TimeRecord *slaveZero) THREEWORDINLINE(0x303C, 0xB3, 0xAAAA); extern pascal ComponentInstance GetTimeBaseMasterClock(TimeBase tb) THREEWORDINLINE(0x303C, 0xB0, 0xAAAA); extern pascal void ConvertTime(TimeRecord *inout, TimeBase newBase) THREEWORDINLINE(0x303C, 0xB5, 0xAAAA); extern pascal void ConvertTimeScale(TimeRecord *inout, TimeScale newScale) THREEWORDINLINE(0x303C, 0xB7, 0xAAAA); extern pascal void AddTime(TimeRecord *dst, const TimeRecord *src) THREEWORDINLINE(0x303C, 0x10C, 0xAAAA); extern pascal void SubtractTime(TimeRecord *dst, const TimeRecord *src) THREEWORDINLINE(0x303C, 0x10D, 0xAAAA); extern pascal long GetTimeBaseStatus(TimeBase tb, TimeRecord *unpinnedTime) THREEWORDINLINE(0x303C, 0x10B, 0xAAAA); extern pascal void SetTimeBaseZero(TimeBase tb, TimeRecord *zero) THREEWORDINLINE(0x303C, 0x128, 0xAAAA); extern pascal Fixed GetTimeBaseEffectiveRate(TimeBase tb) THREEWORDINLINE(0x303C, 0x124, 0xAAAA); /**************************************** * * * C A L L B A C K * * * ****************************************/ extern pascal QTCallBack NewCallBack(TimeBase tb, short cbType) THREEWORDINLINE(0x303C, 0xEB, 0xAAAA); extern pascal void DisposeCallBack(QTCallBack cb) THREEWORDINLINE(0x303C, 0xEC, 0xAAAA); extern pascal short GetCallBackType(QTCallBack cb) THREEWORDINLINE(0x303C, 0xED, 0xAAAA); extern pascal TimeBase GetCallBackTimeBase(QTCallBack cb) THREEWORDINLINE(0x303C, 0xEE, 0xAAAA); extern pascal OSErr CallMeWhen(QTCallBack cb, QTCallBackUPP callBackProc, long refCon, long param1, long param2, long param3) THREEWORDINLINE(0x303C, 0xB8, 0xAAAA); extern pascal void CancelCallBack(QTCallBack cb) THREEWORDINLINE(0x303C, 0xB9, 0xAAAA); /**************************************** * * * C L O C K C A L L B A C K * * S U P P O R T * * * ****************************************/ extern pascal OSErr AddCallBackToTimeBase(QTCallBack cb) THREEWORDINLINE(0x303C, 0x129, 0xAAAA); extern pascal OSErr RemoveCallBackFromTimeBase(QTCallBack cb) THREEWORDINLINE(0x303C, 0x12A, 0xAAAA); extern pascal QTCallBack GetFirstCallBack(TimeBase tb) THREEWORDINLINE(0x303C, 0x12B, 0xAAAA); extern pascal QTCallBack GetNextCallBack(QTCallBack cb) THREEWORDINLINE(0x303C, 0x12C, 0xAAAA); extern pascal void ExecuteCallBack(QTCallBack cb) THREEWORDINLINE(0x303C, 0x12D, 0xAAAA); /**************************************** * * * S Y N C T A S K S * * S U P P O R T * * * ****************************************/ extern pascal OSErr QueueSyncTask(QTSyncTaskPtr task) THREEWORDINLINE(0x303C, 0x203, 0xAAAA); extern pascal OSErr DequeueSyncTask(QTSyncTaskPtr qElem) THREEWORDINLINE(0x303C, 0x204, 0xAAAA); /* UPP call backs */ #if GENERATINGCFM #else #endif enum { uppMovieRgnCoverProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(RgnHandle))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))), uppMovieProgressProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Fixed))) | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long))), uppMovieDrawingCompleteProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Movie))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))), uppTrackTransferProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Track))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))), uppGetMovieProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(void*))), uppMoviePreviewCallOutProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))), uppMoviesErrorProcInfo = kPascalStackBased | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(OSErr))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))), uppTextMediaProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Handle))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Movie))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))), uppQTCallBackProcInfo = kPascalStackBased | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(QTCallBack))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))), uppQTSyncTaskProcInfo = kPascalStackBased | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(void*))), uppMCActionFilterProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MovieController))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short*))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*))), uppMCActionFilterWithRefConProcInfo = kPascalStackBased | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(MovieController))) | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))) | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*))) | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long))) }; #if GENERATINGCFM #define NewMovieRgnCoverProc(userRoutine) \ (MovieRgnCoverUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieRgnCoverProcInfo, GetCurrentArchitecture()) #define NewMovieProgressProc(userRoutine) \ (MovieProgressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieProgressProcInfo, GetCurrentArchitecture()) #define NewMovieDrawingCompleteProc(userRoutine) \ (MovieDrawingCompleteUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMovieDrawingCompleteProcInfo, GetCurrentArchitecture()) #define NewTrackTransferProc(userRoutine) \ (TrackTransferUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTrackTransferProcInfo, GetCurrentArchitecture()) #define NewGetMovieProc(userRoutine) \ (GetMovieUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetMovieProcInfo, GetCurrentArchitecture()) #define NewMoviePreviewCallOutProc(userRoutine) \ (MoviePreviewCallOutUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMoviePreviewCallOutProcInfo, GetCurrentArchitecture()) #define NewMoviesErrorProc(userRoutine) \ (MoviesErrorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMoviesErrorProcInfo, GetCurrentArchitecture()) #define NewTextMediaProc(userRoutine) \ (TextMediaUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTextMediaProcInfo, GetCurrentArchitecture()) #define NewQTCallBackProc(userRoutine) \ (QTCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTCallBackProcInfo, GetCurrentArchitecture()) #define NewQTSyncTaskProc(userRoutine) \ (QTSyncTaskUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQTSyncTaskProcInfo, GetCurrentArchitecture()) #define NewMCActionFilterProc(userRoutine) \ (MCActionFilterUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMCActionFilterProcInfo, GetCurrentArchitecture()) #define NewMCActionFilterWithRefConProc(userRoutine) \ (MCActionFilterWithRefConUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMCActionFilterWithRefConProcInfo, GetCurrentArchitecture()) #else #define NewMovieRgnCoverProc(userRoutine) \ ((MovieRgnCoverUPP) (userRoutine)) #define NewMovieProgressProc(userRoutine) \ ((MovieProgressUPP) (userRoutine)) #define NewMovieDrawingCompleteProc(userRoutine) \ ((MovieDrawingCompleteUPP) (userRoutine)) #define NewTrackTransferProc(userRoutine) \ ((TrackTransferUPP) (userRoutine)) #define NewGetMovieProc(userRoutine) \ ((GetMovieUPP) (userRoutine)) #define NewMoviePreviewCallOutProc(userRoutine) \ ((MoviePreviewCallOutUPP) (userRoutine)) #define NewMoviesErrorProc(userRoutine) \ ((MoviesErrorUPP) (userRoutine)) #define NewTextMediaProc(userRoutine) \ ((TextMediaUPP) (userRoutine)) #define NewQTCallBackProc(userRoutine) \ ((QTCallBackUPP) (userRoutine)) #define NewQTSyncTaskProc(userRoutine) \ ((QTSyncTaskUPP) (userRoutine)) #define NewMCActionFilterProc(userRoutine) \ ((MCActionFilterUPP) (userRoutine)) #define NewMCActionFilterWithRefConProc(userRoutine) \ ((MCActionFilterWithRefConUPP) (userRoutine)) #endif #if GENERATINGCFM #define CallMovieRgnCoverProc(userRoutine, theMovie, changedRgn, refcon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieRgnCoverProcInfo, (theMovie), (changedRgn), (refcon)) #define CallMovieProgressProc(userRoutine, theMovie, message, whatOperation, percentDone, refcon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieProgressProcInfo, (theMovie), (message), (whatOperation), (percentDone), (refcon)) #define CallMovieDrawingCompleteProc(userRoutine, theMovie, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppMovieDrawingCompleteProcInfo, (theMovie), (refCon)) #define CallTrackTransferProc(userRoutine, t, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppTrackTransferProcInfo, (t), (refCon)) #define CallGetMovieProc(userRoutine, offset, size, dataPtr, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppGetMovieProcInfo, (offset), (size), (dataPtr), (refCon)) #define CallMoviePreviewCallOutProc(userRoutine, refcon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppMoviePreviewCallOutProcInfo, (refcon)) #define CallMoviesErrorProc(userRoutine, theErr, refcon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppMoviesErrorProcInfo, (theErr), (refcon)) #define CallTextMediaProc(userRoutine, theText, theMovie, displayFlag, refcon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppTextMediaProcInfo, (theText), (theMovie), (displayFlag), (refcon)) #define CallQTCallBackProc(userRoutine, cb, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppQTCallBackProcInfo, (cb), (refCon)) #define CallQTSyncTaskProc(userRoutine, task) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppQTSyncTaskProcInfo, (task)) #define CallMCActionFilterProc(userRoutine, mc, action, params) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppMCActionFilterProcInfo, (mc), (action), (params)) #define CallMCActionFilterWithRefConProc(userRoutine, mc, action, params, refCon) \ CallUniversalProc((UniversalProcPtr)(userRoutine), uppMCActionFilterWithRefConProcInfo, (mc), (action), (params), (refCon)) #else #define CallMovieRgnCoverProc(userRoutine, theMovie, changedRgn, refcon) \ (*(userRoutine))((theMovie), (changedRgn), (refcon)) #define CallMovieProgressProc(userRoutine, theMovie, message, whatOperation, percentDone, refcon) \ (*(userRoutine))((theMovie), (message), (whatOperation), (percentDone), (refcon)) #define CallMovieDrawingCompleteProc(userRoutine, theMovie, refCon) \ (*(userRoutine))((theMovie), (refCon)) #define CallTrackTransferProc(userRoutine, t, refCon) \ (*(userRoutine))((t), (refCon)) #define CallGetMovieProc(userRoutine, offset, size, dataPtr, refCon) \ (*(userRoutine))((offset), (size), (dataPtr), (refCon)) #define CallMoviePreviewCallOutProc(userRoutine, refcon) \ (*(userRoutine))((refcon)) #define CallMoviesErrorProc(userRoutine, theErr, refcon) \ (*(userRoutine))((theErr), (refcon)) #define CallTextMediaProc(userRoutine, theText, theMovie, displayFlag, refcon) \ (*(userRoutine))((theText), (theMovie), (displayFlag), (refcon)) #define CallQTCallBackProc(userRoutine, cb, refCon) \ (*(userRoutine))((cb), (refCon)) #define CallQTSyncTaskProc(userRoutine, task) \ (*(userRoutine))((task)) #define CallMCActionFilterProc(userRoutine, mc, action, params) \ (*(userRoutine))((mc), (action), (params)) #define CallMCActionFilterWithRefConProc(userRoutine, mc, action, params, refCon) \ (*(userRoutine))((mc), (action), (params), (refCon)) #endif #if PRAGMA_IMPORT_SUPPORTED #pragma import off #endif #if PRAGMA_ALIGN_SUPPORTED #pragma options align=reset #endif #ifdef __cplusplus } #endif #endif /* __MOVIES__ */